﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Biciq.Logica;
using Microsoft.Practices.EnterpriseLibrary.Caching;
using Biciq.Datos;
using System.Configuration;
using Biciq.Web.UI.Clases;
using System.Drawing;
using System.IO;

namespace Biciq.Web.UI.RegistroInterno
{
    public partial class Default : Page
    {

        private const string Error = "error";
        private const string Noticia = "notice";
        private const string Ok = "success";
        private const string DesplegarMensaje = "DesplegarMensaje";
        private const string ScriptDesplegarMensajeMensaje = "MostrarMensaje('{0}', '{1}', '{2}')";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RegistrarJavaScript();
                CargarPaises();
                CargarParametros();
                CargarTipoSuscripcion();
                CargarValorTemporal();
                Inicializar();
            }
        }
        private void Inicializar()
        {
            rfvPasaporte.Enabled = false;
            txtPasaporte.Visible = false;
        }
        private void CargarValorTemporal()
        {
            ICacheManager cache = CacheFactory.GetCacheManager();

            var parametrosCobro = cache["ParametrosCobro"] as List<Parametro>;

            decimal valorInsripcion = Convert.ToDecimal(parametrosCobro.Where(p => p.Nombre == "Costo Inscripción").FirstOrDefault().Valor);
            decimal valorAnual = Convert.ToDecimal(parametrosCobro.Where(p => p.Nombre == "Costo Anual Suscripción").FirstOrDefault().Valor);

            decimal valorTotal = valorInsripcion + valorAnual;
            //lblValor.Text = valorTotal.ToString();

            //lblFechaCaducidad.Text = DateTime.Now.AddDays(365).ToString("dd/MM/yyyy");

        }

        protected void cmbPais_SelectedIndexChanged(object sender, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e)
        {
            txtCedula.Text = "";
            txtPasaporte.Text = "";
            if (cmbPais.Text != "Ecuador")
            {
                txtPasaporte.Visible = true;
                txtCedula.Visible = false;
                rfvCedula.Enabled = false;
                rfvPasaporte.Enabled = true;
            }
            else
            {
                txtPasaporte.Visible = false;
                txtCedula.Visible = true;
                rfvCedula.Enabled = true;
                rfvPasaporte.Enabled = false;
            }
        }

        private void CargarParametros()
        {

            ICacheManager cache = CacheFactory.GetCacheManager();

            var parametrosCobro = cache["ParametrosCobro"] as List<Parametro>;


            if (parametrosCobro == null)
            {
                RegistroNegocio negocio = new RegistroNegocio();
                parametrosCobro = negocio.ObtenerValoresSuscripcion();
                cache.Add("ParametrosCobro", parametrosCobro);

            }


        }
        private void CargarTipoSuscripcion()
        {
            ICacheManager cache = CacheFactory.GetCacheManager();

            bool activar = true;
            RegistroNegocio negocio = new RegistroNegocio();

            var TiposSuscripciones = cache["TiposSuscripcion"] as List<TipoSuscripcion>;

            if (TiposSuscripciones == null)
            {
                TiposSuscripciones = negocio.ObtenerTipoSuscripcion();
                cache.Add("TiposSuscripcion", TiposSuscripciones);
            }
            var activarMensual = Convert.ToBoolean(new AppSettingsReader().GetValue("ActivarMensual", activar.GetType()));
            //if (activarMensual)
            //{
            //    cmbTipoSuscripcion.DataSource = TiposSuscripciones;
            //}
            //else
            //{
            //    cmbTipoSuscripcion.DataSource = TiposSuscripciones.Where(a => a.Nombre == "Anual");
            //}
            //cmbTipoSuscripcion.DataBind();
            
        }

        private void RegistrarJavaScript()
        {
            this.txtCedula.Attributes.Add("OnKeyPress", "return aceptarNumeros(event);");
            //this.txtTelefono.Attributes.Add("OnKeyPress", "return aceptarNumeros(event);");
            //this.txtTelefonoL.Attributes.Add("OnKeyPress", "return aceptarNumeros(event);");
            //this.txtTelefonoR.Attributes.Add("OnKeyPress", "return aceptarNumeros(event);");

            //this.txtMobil.Attributes.Add("OnKeyPress", "return aceptarNumeros(event);");
        }
        private void CargarPaises()
        {
            RegistroNegocio negocio = new RegistroNegocio();
            ICacheManager cache = CacheFactory.GetCacheManager();
            var paises = cache["Pais"] as List<Pai>;
            if (paises == null)
            {
                paises = negocio.ObtenerPais();
            }
            cmbPais.DataSource = paises;
            cmbPais.DataBind();
            cmbPais.SelectedIndex = cmbPais.FindItemByText("Ecuador").Index;

        }

        private bool ValidarIdentificacionExistente()
        {
            RegistroNegocio negocio = new RegistroNegocio();
            Cliente cliente = null;
            if (cmbPais.Text != "Ecuador")
            {
                cliente = negocio.BuscarClientePorIdentificacion(txtPasaporte.Text);
            }
            else
            {
                cliente = negocio.BuscarClientePorIdentificacion(txtCedula.Text);
            }
            
            if (cliente != null)
                return false;
            return true;

        }
        private void Guardar()
        {
            if (!ValidarIdentificacionExistente())
            {
              //  this.MostrarMensaje(TipoNotificacion.Notificacion, "Persona Existente", "Ya existe una persona registrada con la misma identificación");
                WUCMensaje.MensajeError("Ya existe una persona registrada con la misma identificación ");
                MessagePopup.Show();
                
                return;
            }

            

            Cliente cliente = new Cliente();
            cliente.Apellidos = txtApellidos.Text.ToUpper();

            cliente.CaducidadSuscripcion = null;

        

            cliente.Direccion = txtDireccion.Text.ToUpper();
            //cliente.DirecionReferenciaF1 = txtDireccionF1.Text.ToUpper();
            //cliente.DirecionReferenciaF2 = txtDireccionF2.Text.ToUpper();

            //cliente.DirecionReferenciaL1 = txtDireccionL1.Text.ToUpper();
            cliente.Email = txtEmail.Text;
            cliente.Estado = Enumerados.Estado.Registrado.ToString();
            cliente.FechaNacimiento = dtFechaNacimiento.SelectedDate;
            if (cmbPais.Text != "Ecuador")
            {
                cliente.Identificacion = txtPasaporte.Text.ToUpper();
            }
            else
            {
                cliente.Identificacion = txtCedula.Text;
            }

            cliente.Mobil = txtCelular.Text;
            cliente.NivelInstruccion = rdbInstruccion.SelectedItem.Text;
            //cliente.NombreReferenciaF1 = txtNombreF1.Text.ToUpper();
            //cliente.NombreReferenciaF2 = txtNombreF2.Text.ToUpper();
            //cliente.NombreReferenciaL1 = txtNombreL1.Text.ToUpper();
            cliente.Nombres = txtNombres.Text.ToUpper();
            cliente.NombresApellidos = cliente.Nombres.ToUpper() + " " + cliente.Apellidos.ToUpper();
            cliente.Ocupacion = rdbOcupacion.SelectedItem.Text;
            cliente.PaisId = Guid.Parse(cmbPais.SelectedItem.Value.ToString());
            cliente.Sexo = rdbGenero.SelectedItem.Text;
            cliente.Telefono = txtTelefono.Text;
            //cliente.TelefonoReferenciaF1 = txtTelefonoF1.Text;
            //cliente.TelefonoReferenciaF2 = txtTelefonoF2.Text;
            //cliente.TelefonoReferenciaL1 = txtTelefonoL1.Text;
            //cliente.TipoSuscripcionId = Guid.Parse(cmbTipoSuscripcion.SelectedItem.Value.ToString());
            //cliente.Id = Guid.NewGuid();
            if (hcodigo.Value == null)
            {
                cliente.Id = new Guid(hcodigo.Value.ToString());
            }
            else
            {
                cliente.Id = Guid.NewGuid();
            }
            cliente.Sector = rdbSector.SelectedItem.Text;
            cliente.DireccionLugarTrabajo = txtDireccionEmpresa.Text.ToUpper();
            cliente.LugarTrabajo = txtEmpresa.Text.ToUpper();
            cliente.FechaRegistro = DateTime.Now;
            cliente.Promocion = false;
            cliente.Formulario = false;
            cliente.CopiaCedula = false;
            cliente.CopiaPapeleta = false;
            cliente.PlanillaServicios = false;
            cliente.Contrato = false;

            Comun comun = new Comun();
            Result resultado = comun.crearObjetoCliente(cliente, "Clientes");
            if (resultado.estado)
            {
                Response.Redirect("~/Reportes/?Tipo=Cliente&Id=" + cliente.Id + "&carnet=CarnetClienteHombre");
               
            }
            else
            {
                WUCMensaje.MensajeError("Error desconocido al intentar registrar un nuevo cliente, espere unos segundos e intente nuevamente ");
                MessagePopup.Show();
               // this.MostrarMensaje(TipoNotificacion.Notificacion, "", "");

            }
        }
      
        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            
            
            Validate("DatosGenerales");
            Validate("DatosContacto");
            //if (cmbPais.Text == "Ecuador")
            //{
            //    Validate("ReferenciasLaborales");
            //    Validate("ReferenciasFamiliares");
            //}

            if (IsValid)
            {
                Guardar();
            }
            else
            {
                //this.MostrarMensaje(TipoNotificacion.Error, "Campos Obligatorios", "Los campos marcados con (*) son obligatorios");
                lblMensaje.ForeColor = Color.Red;

            }
        }

        protected void rdbOcupacion_SelectedIndexChanged(object sender, EventArgs e)
        {
            //if (rdbOcupacion.SelectedValue == "Estudiante" || rdbOcupacion.SelectedValue == "Desempleado")
            //{
            //    RequiredFieldValidator18.Enabled = false;
            //    RequiredFieldValidator20.Enabled = false;
            //    RequiredFieldValidator21.Enabled = false;
            //    Label4.Text = "";
            //    Label19.Text = "";
            //    Label20.Text = "";

            //}
            //else
            //{
            //    RequiredFieldValidator18.Enabled = true;
            //    RequiredFieldValidator20.Enabled = true;
            //    RequiredFieldValidator21.Enabled = true;
            //    Label4.Text = "";
            //    Label19.Text = "";
            //    Label20.Text = "";
            //}
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            litScript.Text = "window.open('','_parent',''); window.close();";
        }

        protected void Button3_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                if (FileUpload1.PostedFile.ContentType == "image/pjpeg" || FileUpload1.PostedFile.ContentType == "image/jpeg" || FileUpload1.PostedFile.ContentType == "image/gif" || FileUpload1.PostedFile.ContentType == "image/png" || FileUpload1.PostedFile.ContentType == "image/bmp" || FileUpload1.PostedFile.ContentType == "image/tiff")
                {
                    if (FileUpload1.PostedFile.ContentLength < 512000)
                    {
                        string codigo = Guid.NewGuid().ToString();
                        FileInfo archivo = new FileInfo(FileUpload1.FileName);
                        string carpetaFotos = new AppSettingsReader().GetValue("CarpetaFotos", codigo.GetType()).ToString();
                        string URL = new AppSettingsReader().GetValue("URL", codigo.GetType()).ToString() + codigo + archivo.Extension;
                        FileUpload1.SaveAs(carpetaFotos + codigo + archivo.Extension);
                        Image1.ImageUrl = URL;
                        hcodigo.Value = codigo;

                    }
                    else
                    {
                        WUCMensaje.MensajeError("El tamaño máximo de la imagen es de 500 k ");
                        MessagePopup.Show();
                    }
                }
                else
                {
                    WUCMensaje.MensajeError("Solo se aceptan imágenes (jpg,gif,bmp,tiff) ");
                    MessagePopup.Show();
                }
            }
        }

        

      
    }
}